(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
0(#) → #
+(x, #) → x
+(#, x) → x
+(0(x), 0(y)) → 0(+(x, y))
+(0(x), 1(y)) → 1(+(x, y))
+(1(x), 0(y)) → 1(+(x, y))
+(1(x), 1(y)) → 0(+(+(x, y), 1(#)))
+(x, +(y, z)) → +(+(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +(+(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
Rewrite Strategy: FULL
(1) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(2) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
0(#) → #
+'(x, #) → x
+'(#, x) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(1(x), 1(y)) → 0(+'(+'(x, y), 1(#)))
+'(x, +'(y, z)) → +'(+'(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +'(+'(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
S is empty.
Rewrite Strategy: FULL
(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(4) Obligation:
TRS:
Rules:
0(#) → #
+'(x, #) → x
+'(#, x) → x
+'(0(x), 0(y)) → 0(+'(x, y))
+'(0(x), 1(y)) → 1(+'(x, y))
+'(1(x), 0(y)) → 1(+'(x, y))
+'(1(x), 1(y)) → 0(+'(+'(x, y), 1(#)))
+'(x, +'(y, z)) → +'(+'(x, y), z)
-(x, #) → x
-(#, x) → #
-(0(x), 0(y)) → 0(-(x, y))
-(0(x), 1(y)) → 1(-(-(x, y), 1(#)))
-(1(x), 0(y)) → 1(-(x, y))
-(1(x), 1(y)) → 0(-(x, y))
not(false) → true
not(true) → false
and(x, true) → x
and(x, false) → false
if(true, x, y) → x
if(false, x, y) → y
ge(0(x), 0(y)) → ge(x, y)
ge(0(x), 1(y)) → not(ge(y, x))
ge(1(x), 0(y)) → ge(x, y)
ge(1(x), 1(y)) → ge(x, y)
ge(x, #) → true
ge(#, 1(x)) → false
ge(#, 0(x)) → ge(#, x)
val(l(x)) → x
val(n(x, y, z)) → x
min(l(x)) → x
min(n(x, y, z)) → min(y)
max(l(x)) → x
max(n(x, y, z)) → max(z)
bs(l(x)) → true
bs(n(x, y, z)) → and(and(ge(x, max(y)), ge(min(z), x)), and(bs(y), bs(z)))
size(l(x)) → 1(#)
size(n(x, y, z)) → +'(+'(size(x), size(y)), 1(#))
wb(l(x)) → true
wb(n(x, y, z)) → and(if(ge(size(y), size(z)), ge(1(#), -(size(y), size(z))), ge(1(#), -(size(z), size(y)))), and(wb(y), wb(z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
(5) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
+',
-,
ge,
min,
max,
bs,
size,
wbThey will be analysed ascendingly in the following order:
+' < size
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(6) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
+', -, ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
+' < size
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(7) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol +'.
(8) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
-, ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
- < wb
ge < bs
ge < wb
min < bs
max < bs
size < wb
(9) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
-(
gen_#:1:l:n3_2(
n365134_2),
gen_#:1:l:n3_2(
n365134_2)) →
gen_#:1:l:n3_2(
0), rt ∈ Ω(1 + n365134
2)
Induction Base:
-(gen_#:1:l:n3_2(0), gen_#:1:l:n3_2(0)) →RΩ(1)
gen_#:1:l:n3_2(0)
Induction Step:
-(gen_#:1:l:n3_2(+(n365134_2, 1)), gen_#:1:l:n3_2(+(n365134_2, 1))) →RΩ(1)
0(-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2))) →IH
0(gen_#:1:l:n3_2(0)) →RΩ(1)
#
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(10) Complex Obligation (BEST)
(11) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
ge, min, max, bs, size, wb
They will be analysed ascendingly in the following order:
ge < bs
ge < wb
min < bs
max < bs
size < wb
(12) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
ge(
gen_#:1:l:n3_2(
n367196_2),
gen_#:1:l:n3_2(
n367196_2)) →
true, rt ∈ Ω(1 + n367196
2)
Induction Base:
ge(gen_#:1:l:n3_2(0), gen_#:1:l:n3_2(0)) →RΩ(1)
true
Induction Step:
ge(gen_#:1:l:n3_2(+(n367196_2, 1)), gen_#:1:l:n3_2(+(n367196_2, 1))) →RΩ(1)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) →IH
true
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(13) Complex Obligation (BEST)
(14) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
min, max, bs, size, wb
They will be analysed ascendingly in the following order:
min < bs
max < bs
size < wb
(15) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol min.
(16) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
max, bs, size, wb
They will be analysed ascendingly in the following order:
max < bs
size < wb
(17) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol max.
(18) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
bs, size, wb
They will be analysed ascendingly in the following order:
size < wb
(19) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol bs.
(20) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
size, wb
They will be analysed ascendingly in the following order:
size < wb
(21) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol size.
(22) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
The following defined symbols remain to be analysed:
wb
(23) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol wb.
(24) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(25) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
(26) BOUNDS(n^1, INF)
(27) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
ge(gen_#:1:l:n3_2(n367196_2), gen_#:1:l:n3_2(n367196_2)) → true, rt ∈ Ω(1 + n3671962)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(28) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
(29) BOUNDS(n^1, INF)
(30) Obligation:
TRS:
Rules:
0(
#) →
#+'(
x,
#) →
x+'(
#,
x) →
x+'(
0(
x),
0(
y)) →
0(
+'(
x,
y))
+'(
0(
x),
1(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
0(
y)) →
1(
+'(
x,
y))
+'(
1(
x),
1(
y)) →
0(
+'(
+'(
x,
y),
1(
#)))
+'(
x,
+'(
y,
z)) →
+'(
+'(
x,
y),
z)
-(
x,
#) →
x-(
#,
x) →
#-(
0(
x),
0(
y)) →
0(
-(
x,
y))
-(
0(
x),
1(
y)) →
1(
-(
-(
x,
y),
1(
#)))
-(
1(
x),
0(
y)) →
1(
-(
x,
y))
-(
1(
x),
1(
y)) →
0(
-(
x,
y))
not(
false) →
truenot(
true) →
falseand(
x,
true) →
xand(
x,
false) →
falseif(
true,
x,
y) →
xif(
false,
x,
y) →
yge(
0(
x),
0(
y)) →
ge(
x,
y)
ge(
0(
x),
1(
y)) →
not(
ge(
y,
x))
ge(
1(
x),
0(
y)) →
ge(
x,
y)
ge(
1(
x),
1(
y)) →
ge(
x,
y)
ge(
x,
#) →
truege(
#,
1(
x)) →
falsege(
#,
0(
x)) →
ge(
#,
x)
val(
l(
x)) →
xval(
n(
x,
y,
z)) →
xmin(
l(
x)) →
xmin(
n(
x,
y,
z)) →
min(
y)
max(
l(
x)) →
xmax(
n(
x,
y,
z)) →
max(
z)
bs(
l(
x)) →
truebs(
n(
x,
y,
z)) →
and(
and(
ge(
x,
max(
y)),
ge(
min(
z),
x)),
and(
bs(
y),
bs(
z)))
size(
l(
x)) →
1(
#)
size(
n(
x,
y,
z)) →
+'(
+'(
size(
x),
size(
y)),
1(
#))
wb(
l(
x)) →
truewb(
n(
x,
y,
z)) →
and(
if(
ge(
size(
y),
size(
z)),
ge(
1(
#),
-(
size(
y),
size(
z))),
ge(
1(
#),
-(
size(
z),
size(
y)))),
and(
wb(
y),
wb(
z)))
Types:
0 :: #:1:l:n → #:1:l:n
# :: #:1:l:n
+' :: #:1:l:n → #:1:l:n → #:1:l:n
1 :: #:1:l:n → #:1:l:n
- :: #:1:l:n → #:1:l:n → #:1:l:n
not :: false:true → false:true
false :: false:true
true :: false:true
and :: false:true → false:true → false:true
if :: false:true → false:true → false:true → false:true
ge :: #:1:l:n → #:1:l:n → false:true
val :: #:1:l:n → #:1:l:n
l :: #:1:l:n → #:1:l:n
n :: #:1:l:n → #:1:l:n → #:1:l:n → #:1:l:n
min :: #:1:l:n → #:1:l:n
max :: #:1:l:n → #:1:l:n
bs :: #:1:l:n → false:true
size :: #:1:l:n → #:1:l:n
wb :: #:1:l:n → false:true
hole_#:1:l:n1_2 :: #:1:l:n
hole_false:true2_2 :: false:true
gen_#:1:l:n3_2 :: Nat → #:1:l:n
Lemmas:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
Generator Equations:
gen_#:1:l:n3_2(0) ⇔ #
gen_#:1:l:n3_2(+(x, 1)) ⇔ 1(gen_#:1:l:n3_2(x))
No more defined symbols left to analyse.
(31) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
-(gen_#:1:l:n3_2(n365134_2), gen_#:1:l:n3_2(n365134_2)) → gen_#:1:l:n3_2(0), rt ∈ Ω(1 + n3651342)
(32) BOUNDS(n^1, INF)